using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using Marlimer.Common;

namespace Marlimer.Data.Comercial
{
    public class com_ImportarDatosNextel
    {
        public bool Importar(DataSet dsImport)
        {
            bool resul = false;

            SqlCommand sqlcmd = new SqlCommand();
            SqlCommand sqlcmd2 = new SqlCommand();
            sqlcmd.CommandText = "spPrepareNexPedidoCab";
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.Connection = Session.getConexion();

            sqlcmd2.CommandText = "spPrepareNexPedidoDet";
            sqlcmd2.CommandType = CommandType.StoredProcedure;
            sqlcmd2.Connection = Session.getConexion();

            SqlDataAdapter daCab = new SqlDataAdapter(sqlcmd);
            SqlDataAdapter daDet = new SqlDataAdapter(sqlcmd2);
            DataTable dtActualCab = new DataTable();
            DataTable dtActualDet = new DataTable();

            SqlTransaction transac = null;

            try
            {
                //se llena el data table actual con los resultados 
                //del comandoDel
                daCab.Fill(dtActualCab);
                daDet.Fill(dtActualDet);

                //recorrer dsImport e ir agregando al dsActual
                for (int i = 0; i < dsImport.Tables[0].Rows.Count; i++)
                {
                    dtActualCab.Rows.Add(dsImport.Tables[0].Rows[i].ItemArray);
                }

                for (int i = 0; i < dsImport.Tables[1].Rows.Count; i++)
                {
                    dtActualDet.Rows.Add(dsImport.Tables[1].Rows[i].ItemArray);
                }

                //insertar los registro del dtActual         
                SqlCommandBuilder sqlcmdblCab = new SqlCommandBuilder(daCab);
                SqlCommandBuilder sqlcmdblDet = new SqlCommandBuilder(daDet);

                daCab.Update(dtActualCab);
                daDet.Update(dtActualDet);

                //despues de actualizar ejecutar el comando que actualiza
                //en la tabla maestra
                transac = Session.getConexion().BeginTransaction("savepedNex");

                //despues de actualizar ejecutar el comando que actualiza
                //en la tabla maestra
                SqlCommand sqlcmdUp = new SqlCommand();
                sqlcmdUp.CommandTimeout = 0;
                sqlcmdUp.CommandText = "spUpdNexPedidos";
                sqlcmdUp.CommandType = CommandType.StoredProcedure;
                sqlcmdUp.Connection = Session.getConexion();
                sqlcmdUp.Transaction = transac;  

                sqlcmdUp.ExecuteNonQuery();
                transac.Commit();
                resul = true;
            }
            catch (Exception ex)
            {
                transac.Rollback();
                throw new Exception(ex.Message, ex);
            }

            return resul;
        }

    }
}
